package com.bytedance.dao;


import com.bytedance.dataobject.A;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.jdbc.SQL;

import java.util.List;

public class AProvider {

    public String insertSQL() {
        String sql = new SQL()
                .INSERT_INTO("A")
                .VALUES("A", "#{A}")
                .VALUES("B", "#{B}")
                .VALUES("C", "#{C}")
                .VALUES("D", "#{D}")
                .VALUES("E", "#{E}")
                .VALUES("aa", "#{aa}")
                .VALUES("bb", "#{bb}")
                .VALUES("cc", "#{cc}")
                .VALUES("dd", "#{dd}")
                .VALUES("ee", "#{ee}")
                .toString();
        return sql;
    }

    public String updateSQL() {
        String sql = new SQL()
                .UPDATE("A")
                .SET("B=#{B}")
                .SET("C=#{C}")
                .SET("D=#{D}")
                .SET("E=#{E}")
                .SET("aa=#{aa}")
                .SET("bb=#{bb}")
                .SET("cc=#{cc}")
                .SET("dd=#{dd}")
                .SET("ee=#{ee}")
                .WHERE("A=#{A}")
                .toString();
        return sql;
    }

    public String selectByIdSQL() {
        String sql = new SQL()
                .SELECT("*")
                .FROM("A")
                .WHERE("A=#{A}")
                .toString();
        return sql;
    }

    public String selectLikeIdSQL() {
        String sql = new SQL()
                .SELECT("*")
                .FROM("A")
                .WHERE("A like '%${id}%'")
                .toString();
        return sql;
    }

    public String deleteByIdSQL() {
        String sql = new SQL()
                .DELETE_FROM("A")
                .WHERE("A=#{A}")
                .toString();
        return sql;
    }

    public String insertListSQL(@Param("aList") List<A> aList) {
        return new SQL() {{
            INSERT_INTO("A").
            INTO_COLUMNS("A", "B", "C", "D", "E", "aa", "bb", "cc", "dd", "ee");
//            for (int i = 0;i < aList.size() - 1;i++) {
//                A a = aList.get(i);
//                INTO_VALUES(a.getA(), a.getB(), a.getC(), a.getD(), a.getE(), a.getAa().toString(), a.getBb().toString(),
//                        a.getCc().toString(), a.getDd().toString(), a.getEe().toString())
//                        .ADD_ROW();
//            }
//            A a = aList.get(aList.size() - 1);
//            INTO_VALUES(a.getA(), a.getB(), a.getC(), a.getD(), a.getE(), a.getAa().toString(), a.getBb().toString(),
//                    a.getCc().toString(), a.getDd().toString(), a.getEe().toString());
            for (A a : aList) {
                INTO_VALUES(a.getA(), a.getB(), a.getC(), a.getD(), a.getE(), a.getAa().toString(), a.getBb().toString(),
                        a.getCc().toString(), a.getDd().toString(), a.getEe().toString())
                        .ADD_ROW();
            }
        }}.toString();
    }

    public String selectCountSQL() {
        String sql = new SQL()
                .SELECT("count(*)")
                .FROM("A")
                .WHERE("${column} = 1")
                .toString();
        return sql;
    }
}
